/// *
// * 文件名：ProtoStuffSerializerUtil.java
// * 版权：MoonBox
// * 修改人：Peter
// * 修改时间：2019年2月28日
// * 修改内容：新增
// */
// package com.renzhebiao.lkang.utils;
//
// import java.io.ByteArrayInputStream;
// import java.io.IOException;
// import java.util.List;
//
// import com.fasterxml.jackson.databind.ObjectMapper;
//
/// **
// * TODO 添加类的一句话简单描述。
// * <p>
// * TODO 详细描述
// *
// * @author Peter
// * @since 1.0.0
// */
// public class ProtoStuffSerializerUtil {
//
// private static ObjectMapper objectMapper = new ObjectMapper();
//
// /**
// * 序列化对象
// *
// * @param obj
// * @return
// */
// public static <T> byte[] serialize(T obj) {
// if (obj == null) {
// throw new RuntimeException("序列化对象(" + obj + ")!");
// }
// @SuppressWarnings("unchecked")
// Schema<T> schema = (Schema<T>) RuntimeSchema.getSchema(obj.getClass());
// LinkedBuffer buffer = LinkedBuffer.allocate(1024 * 1024);
// byte[] protostuff = null;
// try {
// protostuff = ProtostuffIOUtil.toByteArray(obj, schema, buffer);
// objectMapper.writeValueAsString(obj);
// } catch (Exception e) {
// throw new RuntimeException("序列化(" + obj.getClass() + ")对象(" + obj + ")发生异常!", e);
// } finally {
// buffer.clear();
// }
// return protostuff;
// }
//
// /**
// * 反序列化对象
// *
// * @param paramArrayOfByte
// * @param targetClass
// * @return
// */
// public static <T> T deserialize(byte[] paramArrayOfByte, Class<T> targetClass) {
// if (paramArrayOfByte == null || paramArrayOfByte.length == 0) {
// throw new RuntimeException("反序列化对象发生异常,byte序列为空!");
// }
// T instance = null;
// try {
// instance = targetClass.newInstance();
// } catch (InstantiationException e1) {
// throw new RuntimeException("反序列化过程中依据类型创建对象失败!", e1);
// } catch (IllegalAccessException e2) {
// throw new RuntimeException("反序列化过程中依据类型创建对象失败!", e2);
// }
// Schema<T> schema = RuntimeSchema.getSchema(targetClass);
// ProtostuffIOUtil.mergeFrom(paramArrayOfByte, instance, schema);
// return instance;
// }
//
// /**
// * 序列化列表
// *
// * @param objList
// * @return
// */
// public static <T> byte[] serializeList(List<T> objList) {
// if (objList == null || objList.isEmpty()) {
// throw new RuntimeException("序列化对象列表(" + objList + ")参数异常!");
// }
// @SuppressWarnings("unchecked")
// Schema<T> schema = (Schema<T>) RuntimeSchema.getSchema(objList.get(0).getClass());
// LinkedBuffer buffer = LinkedBuffer.allocate(1024 * 1024);
// byte[] protostuff = null;
// ByteArrayOutputStream bos = null;
// try {
// bos = new ByteArrayOutputStream();
// ProtostuffIOUtil.writeListTo(bos, objList, schema, buffer);
// protostuff = bos.toByteArray();
// } catch (Exception e) {
// throw new RuntimeException("序列化对象列表(" + objList + ")发生异常!", e);
// } finally {
// buffer.clear();
// try {
// if (bos != null) {
// bos.close();
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
//
// return protostuff;
// }
//
// /**
// * 反序列化列表
// *
// * @param paramArrayOfByte
// * @param targetClass
// * @return
// */
// public static <T> List<T> deserializeList(byte[] paramArrayOfByte, Class<T> targetClass) {
// if (paramArrayOfByte == null || paramArrayOfByte.length == 0) {
// throw new RuntimeException("反序列化对象发生异常,byte序列为空!");
// }
//
// Schema<T> schema = RuntimeSchema.getSchema(targetClass);
// List<T> result = null;
// try {
// result = ProtostuffIOUtil.parseListFrom(new ByteArrayInputStream(paramArrayOfByte), schema);
// } catch (IOException e) {
// throw new RuntimeException("反序列化对象列表发生异常!", e);
// }
// return result;
// }
//
// }
